/**
 * @author xuzj create 2008-07-08
 * @text 员工赋权
 */
var workerReal = {
    init: function(){
        var currentWorker = {
            roles: [],
            companies: []
        };
        // 定义DWR
        var dwr = {
            findRole: roleDwr.findRoleByFilter,
            pageStaffAndWorker: staffDwr.pageStaffAndWorker,
            getWorkerAndExt: staffDwr.getWorkerAndExt,
//            getCompanies: regionDwr.getCompanies,
            updateWorkerAndExt: staffDwr.updateWorker
        };
        
        // 员工列表数据对象
        var staffListMeta = [{
            id: 'staffId',
            desc: '员工ID',
            field: 'staffId',
            type: 'int',
            hidden: true
        }, {
            desc: '登录ID',
            field: 'loginId',
            type: 'int',
            hidden: true
        }, {
            desc: '分公司ID',
            field: 'companyId',
            type: 'int',
            hidden: true
        }, {
            desc: '责任区域',
            field: 'departId',
            type: 'int'
        }, {
            field: 'staffName',
            desc: '员工姓名'
        }, {
            field: 'loginCode',
            desc: '工号'
        }, {
            field: 'loginLevel',
            desc: '工号等级',
            renderer: function(val){
                var str;
                switch (val) {
                	case 0:
                		str = 'ADMIN账户';
                    break;
                    case 1:
                        str = '系统管理员';
                        break;
                    case 2:
                        str = '超级用户';
                        break;
                    case 3:
                        str = '普通用户';
                        break;
                    default:
                        str = '普通用户';
                        break;
                }
                return str;
            }
        }, {
            field: 'relaPhone',
            desc: '联系电话'
        }, {
            field: 'relaMobile',
            desc: '移动电话'
        }, {
            field: 'relaAddr',
            desc: '联系地址'
        }, {
            field: 'state',
            desc: '工号状态',
            renderer: function(val){
                var str;
                switch (val) {
                    case 0:
                        str = '失效';
                        break;
                    case 1:
                        str = '正常';
                        break;
                    case 2:
                        str = '锁定';
                        break;
                    default:
                        str = '正常';
                        break;
                }
                return str;
            }
        }, {
            field: 'staffState',
            desc: '员工状态',
            renderer: function(val){
                var str;
                switch (val) {
                    case 0:
                        str = '离职';
                        break;
                    case 1:
                        str = '正常';
                        break;
                    case 2:
                        str = '休假';
                        break;
                    default:
                        str = '正常';
                        break;
                }
                return str;
            }
        }];
        
        // 角色列表字段
        var roleListMeta = [{
            id: 'roleId',
            field: 'roleId',
            desc: '角色ID',
            type: 'int',
            hidden: 1
        }, {
            field: 'roleName',
            desc: '角色名称'
        }, {
            field: 'roleDesc',
            desc: '角色说明'
        }, {
            field: 'roleType',
            desc: '角色类型',
            type: 'int',
            renderer: function(val){
                return val == 1 ? '系统管理员' : val == 2 ? '普通员工' : '超级用户';
            }
        }, {
            field: 'state',
            desc: '角色状态',
            type: 'int',
            renderer: function(val){
                return val == 1 ? '有效' : '无效';
            }
        }];
        
//        // 定义分公司下拉列表
//        var conpanySelect = new CQCIS.form.DWRComboBox({
//            ds: {
//                call: dwr.getCompanies
//            },
//            emptyText: '请选择区域',
//            resizable: true,
//            listeners: {
//                'select': function(o){
//                    staffGrid.filter.companyId = o.getValue();
//                    staffGrid.reload();
//                }
//            }
//        });
        
        // 赋权按钮
        var authorizeBtn = new CQCIS.Button({
            text: '员工赋权 (<u>M</u>)',
            iconCls: 'btn_config',
            handler: function(){
                var staff = staffGrid.getSelectedRow();
                if (staff) {
                    dwr.getWorkerAndExt(staff.loginId, function(lv){
                        currentWorker = lv;
                        roleWin.load();
                    });
                } else {
                    CQCIS.msg("请选择要赋权的员工");
                }
            }
        });
        
        // 定义员工列表
        var staffGrid = new CQCIS.grid.PageGrid({
            firstColumn: 'radio',
            dwr: {
                call: dwr.pageStaffAndWorker
            },
            metas: staffListMeta,
            tbar: ['-', authorizeBtn],
            bbar: true,
            initload: true,
            listeners: {
                //'rowdblclick': editBtn.handler,
                'rowcontextmenu': function(o, rowIndex, e){
                    e.stopEvent();
                    gridMenu.showAt(e.getXY());
                }
//            	,
//                'loadcheck': function(){
//                    if (staffGrid.filter.companyId) {
//                        return true;
//                    } else {
//                        CQCIS.msg('请选择要查询的分公司或部门！');
//                        return false;
//                    }
//                }
            }
        });
        staffGrid.render();
        
        var roleGrid = new CQCIS.grid.ListGrid({
            firstColumn: 'checkbox',
            viewConfig: {},
            dwr: {
                call: dwr.findRole
            },
            filter: {},
            metas: roleListMeta,
            initload: false,
            listeners: {
                'render': function(o){
                    o.getStore().on('load', function(ds, datas){
                        var rows = [];
                        for (var i = 0; i < currentWorker.roles.length; i++) {
                            rows.push(ds.indexOf(ds.query('roleId', currentWorker.roles[i].roleId).get(0)));
                        }
                        roleGrid.getSelectionModel().selectRows(rows);
                    });
                }
            }
        });
        
        var roleWin = new CQCIS.form.WinForm({
            title: '角色列表',
            width: 500,
            height: 300,
            items: roleGrid,
            buttons: [
//                      {
//                text: '上一步',
//                handler: function(){
//                    roleWin.hide();
//                    companiesWin.show();
//                }
//            }, 
            {
                text: '保存',
                handler: function(){
                    var ls = roleGrid.getSelections();
                    currentWorker.roles = [];
                    for (var i = 0; i < ls.length; i++) {
                        currentWorker.roles.push({
                            roleId: ls[i].data.roleId
                        });
                    }
                    roleWin.body.mask('保存中，请稍候......');
                    dwr.updateWorkerAndExt(currentWorker, function(){
                        CQCIS.msg('保存成功！');
                        roleWin.body.unmask();
                        roleWin.hide();
                    });
                }
            }, {
                text: '取消',
                handler: function(){
                    roleWin.hide();
                }
            }]
        });
        
//        var companiesGrid = new CQCIS.grid.ListGrid({
//            firstColumn: 'checkbox',
//            viewConfig: {},
//            dwr: {
//                call: dwr.getCompanies
//            },
//            metas: [{
//                id: 'key',
//                desc: '分公司ID',
//                field: 'key',
//                type: 'int',
//                hidden: true
//            }, {
//                desc: '分公司',
//                field: 'label',
//                width: 230
//            }],
//            initload: false,
//            listeners: {
//                'render': function(o){
//                    o.getStore().on('load', function(ds, datas){
//                        var rows = [];
//                        for (var i = 0; i < currentWorker.companies.length; i++) {
//                            rows.push(ds.indexOf(ds.query('key', currentWorker.companies[i].companyId).get(0)));
//                        }
//                        companiesGrid.getSelectionModel().selectRows(rows);
//                    });
//                }
//            }
//        });
//        
//        var companiesWin = new CQCIS.form.WinForm({
//            title: '分公司列表',
//            width: 300,
//            height: 300,
//            items: companiesGrid,
//            buttons: [{
//                text: '下一步',
//                handler: function(){
//                    var ls = companiesGrid.getSelections();
//                    currentWorker.companies = [];
//                    for (var i = 0; i < ls.length; i++) {
//                        currentWorker.companies.push({
//                            companyId: ls[i].data.key
//                        });
//                    }
//                    companiesWin.hide();
//                    roleWin.show();
//                    roleGrid.filter.companyId = conpanySelect.getValue();
//                    roleGrid.filter.state = 1;
//                    roleGrid.reload();
//                }
//            }, {
//                text: '取消',
//                handler: function(){
//                    companiesWin.hide();
//                }
//            }]
//        });
    }
};

Ext.onReady(workerReal.init, workerReal);
